package com.why.cachecloud.dao;

import com.why.cachecloud.entity.ServerInfo;
import com.why.cachecloud.entity.ServerStatus;
import com.why.cachecloud.service.server.data.Server;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 服务器状态信息持久化
 */
public interface ServerStatusDao {

	/**
	 * 查询服务器基本信息
	 * @param ip
	 * @return @ServerInfo
	 */
	public ServerInfo queryServerInfo(@Param("ip") String ip);

	public List<ServerInfo> getAllServerInfo();

	/**
	 * 保存服务器发行版信息
	 * @param ip
	 * @param dist from /etc/issue
	 */
	public void saveServerInfo(@Param("ip") String ip, @Param("dist") String dist);
	
	/**
	 * 删除服务器信息
	 * @param ip
	 * @return 删除的数量
	 */
	public Integer deleteServerInfo(@Param("ip") String ip);
	
	/**
	 * 保存/更新服务器信息
	 * @param server
	 * @return 影响的行数
	 */
	public Integer saveAndUpdateServerInfo(@Param("server")Server server);
	
	/**
	 * 查询服务器状态
	 * @param ip
	 * @param date
	 * @return List<ServerStatus>
	 */
	public List<ServerStatus> queryServerStatus(@Param("ip") String ip, 
			@Param("cdate") String date);
	
	/**
	 * 查询服务器状态
	 * @param ip
	 * @param date
	 * @return List<ServerStatus>
	 */
	public List<ServerStatus> queryServerOverview(@Param("ip") String ip, 
			@Param("cdate") String date);
	
	/**
	 * 查询服务器状态
	 * @param ip
	 * @param date
	 * @return List<ServerStatus>
	 */
	public List<ServerStatus> queryServerCpu(@Param("ip") String ip, 
			@Param("cdate") String date);
	
	/**
	 * 查询服务器状态
	 * @param ip
	 * @param date
	 * @return List<ServerStatus>
	 */
	public List<ServerStatus> queryServerNet(@Param("ip") String ip, 
			@Param("cdate") String date);
	
	/**
	 * 查询服务器状态
	 * @param ip
	 * @param date
	 * @return List<ServerStatus>
	 */
	public List<ServerStatus> queryServerDisk(@Param("ip") String ip, 
			@Param("cdate") String date);
	
	/**
	 * 保存服务器状态
	 * @param Server
	 */
	public void saveServerStat(@Param("server") Server server);
}
